import { app } from 'electron';

import { Env } from '../core/env';
import { log } from '../core/logger';

export default (autoStart: boolean): void => {
  const isMac = Env.isMac;
  const isWindows = Env.isWindows;
  const isLinux = Env.isLinux;
  const appName = Env.app.name; // 应用名称

  if (isLinux) {
    log.warn('Linux 平台不支持自动设置开机启动');
  } else {
    // 设置开机启动配置
    app.setLoginItemSettings({
      openAtLogin: autoStart, // 是否开机启动
      type: isMac && autoStart ? 'agentService' : undefined, // macOS: 使用 agentService 实现隐藏启动
      name: `${appName}-${process.env.NODE_ENV || 'production'}`, // 动态生成应用名称
      path: process.execPath, // 启动路径
      args: isWindows && autoStart ? ['--hidden'] : [] // Windows: 添加隐藏参数
    });

    // 日志记录
    log.info(`操作系统: ${process.platform}`);
    log.info(`设置开机启动: ${autoStart}`);
    if (isMac) {
      log.info(`macOS 开机启动类型: ${autoStart ? 'agentService' : 'default'}`);
    }
    if (isWindows) {
      log.info(`Windows 开机启动参数: ${autoStart ? '--hidden' : '无'}`);
    }
  }
};
